home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / twi12.zip / PROCS.DOC < prev    next >
Text File  |  1992-09-29  |  18KB  |  409 lines

  1. Text Windowing Interface (TWI) v1.2 Procedure List For All Units
  2. TWI (C) David Pabst 1992 All Rights Reserved
  3. =-=-=-=-=-=-=-=-=-=-=-=-=-=-
  4. This file probably will not be able to be printed on your printer without
  5. text to roll on to the next line.  This is known and was done purposely,
  6. since this file is basically designed to be an "online" reference.
  7. =-=-=-=-=-=-=-=-=-=-=-=-=-=-
  8. TWI.TPU - TWI.TPU is the first variation of TWI.  The difference between
  9. this variation and TWI2.TPU is that in TWI.TPU you have to pass the
  10. environment (colors, etc...) through the procedures.  In TWI2.TPU,
  11. there are global variables BUILT IN to the unit itself, so you don't
  12. have to pass variables all the time.
  13.  
  14. TWI2.TPU - Variation 2 of TWI. Var. 2 uses global variables that are
  15. built into TWI2.TPU itself.  Also, MENUS.TPU is built into TWI2.TPU.
  16.  
  17. MENUS.TPU - A full pull down menuing unit with procedures for sub menus
  18. and more! MENUS.TPU is built into TWI2.TPU, and CAN ONLY BE USED WITH
  19. TWI.TPU.
  20.  
  21. Remember: Registering gets you the source code to all three units so
  22. that you can fully customize TWI for your uses!
  23.  
  24. Procedure and Global Variables For TWI.TPU
  25. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  26.  
  27. Interface
  28.  
  29. Var
  30.  YourName : String;         (* Enter your name into this var when reg'd *)
  31.  YourCode : LongInt;        (* Your registration code when you register *)
  32.  
  33. (***************************************************)
  34. (*** IMPORTANT! IMPORTANT! IMPORTANT! IMPORTANT! ***)
  35. (***************************************************)
  36. (*** FGC,BGC,FCCF,FCCB,LC,WCOL,X,Y are Integers! ***)
  37. (*** FGC,BGC,FCCF,FCCB,LC,WCOL are colors        ***)
  38. (*** X and Y are cooridinates                    ***)
  39. (*** A,B,C,D,E,F,G,etc... LineA... are strings   ***)
  40. (*** and are displayed in the windows you draw   ***)
  41. (***************************************************)
  42.  
  43.  
  44. (**** The Following Procedure Set The Interface Up ****)
  45.  
  46. procedure DrawBackGround(StatusLineTop,StatusLineBottom: string; fillchar: char; fccf,fccb,wcol: integer);
  47.  (* Draws the background of the interface, allows for full control *)
  48.  (* Refer: QuickBKGDraw *)
  49.  (* Example: DrawBackGround(Top,Bottom,'▒',7,1,4);
  50.  
  51. Procedure QuickBKGDraw(Top,Bottom: String);
  52.  (* Use instead of DrawBackground for very easy and fast Background draws *)
  53.  (* QUICKBKGDRAW uses hard coded "defaults" for colors and characters *)
  54.  (* All you have to enter is the top and bottom status lines *)
  55.  (* Refer: DrawBackGround; *)
  56.  (* Example: QuickBKGDraw(TheTopStatusLine,'The Bottom Status Line');
  57.  
  58. Procedure ChangeBottomLine(Bottom: string; color : integer);
  59.  (* Changes the status line on the bottom of the screen *)
  60.  (* Refer: ChangeStatusLine; *)
  61.  (* Example: ChangeBottomLine(OnTheBottomLine,4);
  62.  
  63. procedure ChangeStatusLine(Top,StatusLine:string; fccf,fccb,wcol : integer);
  64.  (* Changes the Top and Bottom Status Lines *)
  65.  (* Refer: ChangeBottomLine *)
  66.  (* Example: ChangeStatusLine(Top,Bottom,1,7,2); *)
  67.  
  68. procedure TwiClose;
  69.  (* Shuts TWI totally down, cleans up screen, and terminates program *)
  70.  (* execution *)
  71.  
  72. (**** The following procedures are misc. commands that are included fo your
  73.       benefit ****)
  74.  
  75. Procedure WaitForReturn;
  76.  (* Waits for the user to press return *)
  77.  
  78. Procedure WriteXYi(x,y,text : integer);
  79.  (* Writes an integer to any X,Y cooridinate on the screen *)
  80.  (* Example:  WriteXYI(4,4,4);  *)
  81.  
  82. Procedure WriteXY(X,Y: Integer; Text: String);
  83.  (* Writes a string to any X,Y cooridinate on the screen *)
  84.  (* Example: WriteXY(4,4,'Do you like TWI?'); *)
  85.  
  86. Procedure DrawOneLineWindow(a: string;fgc,bgc,lc,x,y:integer);
  87.  (* Draws a window that is one line in height *)
  88.  (* Example: DrawOnelIneWindow(LineToDisplay,FGC,BGC,LC,3,3); *)
  89.  
  90. Procedure DrawFullWindowOutline (FGC,BGC,LC : Integer );
  91.  (* Draws a box that occupies the whole screen *)
  92.  (* Example: DrawFullWindowOutline (1,2,3); *)
  93.  
  94. procedure TwiFileLoad(FileName,HelpTitle: string; fgc,bgc,lc: integer);
  95.  (* Draws a window, and loads a file 10 lines long and 40 chars wide *)
  96.  (* The procedure also puts a title of the window on it *)
  97.  (* Example: TWIFileLoad('TWIDEMO.HLP','Help',1,7,3); *)
  98.  
  99. procedure DrawSmallWindow(a,b,c,d : string; fgc,bgc,lc,x,y : integer);
  100.  (* Draws a small four line window. *)
  101.  (* Example: DrawSmallWindow(LineA,'Line 2',LineC,'Line 4',fgc,Bgc,Lc,25,8); *)
  102.  
  103. procedure DrawMediumWindow(a,b,c,d,e,f : string; fgc,bgc,lc,x,y: integer);
  104.  (* Draws a window 6 lines long and about 40 characters wide *)
  105.  (* Refer: ClearMediumWindow *)
  106.  (* Example: DrawMediumWindow(A,B,C,D,E,F,1,2,3,4,5); *)
  107.  
  108. procedure DrawLargeWindow(a,b,c,d,e,f,g,h,i,j : string; fgc,bgc,lc,x,y: integer);
  109.  (* Draws a 10 line window. *)
  110.  (* Refer: ClearLargeWindow *)
  111.  (* Example: DrawLargeWindow('Line 1',B,C,D,E,F,G,H,I,J,FGC,2,1,2,3); *)
  112.  
  113. procedure DrawColorBox(x,y,fgc,bgc,lc: integer);
  114.  (* Draws a box that contains all possible combinations of colors available *)
  115.  (* This can be displayed, and used to have users customize their use *)
  116.  (* of TWI.  You have to write the actual input procedure, though *)
  117.  (* Example: DrawColorBox(4,4,FGC,BGC,LC); *)
  118.  
  119. procedure DrawVeryBigWindow(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o: string; fgc,bgc,lc,x,y: integer);
  120.  (* This is the biggest window available right now in TWI. It is 15 lines *)
  121.  (* and very wide. *)
  122.  (* Refer: ClearVeryBigWindow *)
  123.  (* Example: DrawVeryBigWindow(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,1,2,3,4,5); *)
  124.  
  125. Procedure WriteDosError(Error,FGC,BGC,lC,FCCF,FCCB : Integer);
  126.  (* Displays, in a window, the DOS error returned to pascal in *)
  127.  (* DOSERROR after using EXEC,etc...  It Displays the error and the problem *)
  128.  (* Example: WriteDosError(DOSERROR,1,2,3,1,2); *)
  129.  
  130. (**** The following procedures clear the different types of windows and
  131.       boxes from the screen ****)
  132.  
  133. procedure ClearSmallWindow(x,y,fccf,fccb:integer);
  134.  (* Removes a small window from the screen *)
  135.  (* Refer: DrawSmallWindow *)
  136.  (* Example: ClearSmallWindow(25,8,FCCF,FCCB); *)
  137.  
  138. procedure ClearMediumWindow(x,y,fccf,fccb:integer);
  139.  (* Removes a medium window from the screen *)
  140.  (* Refer: DrawSmallWindow *)
  141.  (* Example: ClearMediumWindow(4,5,1,2); *)
  142.  
  143. procedure ClearLargeWindow(x,y,fccf,fccb : integer);
  144.  (* Removes a Large Window from the screen *)
  145.  (* Refer: DrawLargeWindow *)
  146.  (* Example: ClearLargeWindow(3,3,2,2); *)
  147.  
  148. procedure ClearVeryBigWindow(x,y,fccf,fccb: integer);
  149.  (* This removes a VeryBigWindow from the screen *)
  150.  (* Refer: DrawVeryBigWindow *)
  151.  (* Example: ClearVeryBigWindow(4,5,1,2); *)
  152.  
  153. Procedures and Global Variables For TWI2.TPU
  154. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  155. interface
  156. var
  157.  Fillchar     : char;          (* Fill in chacarter for background *)
  158.  YourName     : String;        (* Enter your name when you register *)
  159.  YourCode     : LongInt;       (* Code you receive from me *)
  160.  MenuA,Menub,MenuC,Menud,MenuE,MenuF,MENUG : String[10]; (* Submenus *)
  161.  Hfc, Hbc, Hc, Fccf, Fccb, Wcol, Fgc, Bgc, Lc : integer; (* Colors *)
  162.  
  163. { TWI allows you to pass information in the form of variables through
  164.   your program to this unit.  Descriptions:
  165.  
  166.   -  * FILLCHAR  is a CHARacter - this is the character that is used
  167.        to fill the background of the screen.  Usually it is ▒
  168.      * Yourname is a STRING - in your software type YOURNAME :=
  169.        whateveryournameis. T
  170.      * YourCode is a LONGINT - in your software type YOURCODE :=
  171.        thecodeigaveyou.  BOTH THIS AND YOURNAME MUST BE ENTERED
  172.        IN YOUR SOFTWARE PROGRAM; THIS WILL DISABLE ALL BUG-A-BOO
  173.        SCREENS!
  174.      * MenuA...MenuG are the pull down menu titles, these are the ones
  175.        that are are on top of the screen, and that signify a menu is
  176.        underneath them.  What I mean is, look at your TP6 editor, the
  177.        menu options on the top of the screen.
  178.      * Colors: HFC - Highlight ForeGroundColor for pull down menus
  179.      * Colors: HBC - Hughlight BackgroundColor for pull down menus
  180.   -  * Colors: HC - Highlight Color
  181.   -  * Colors: FCCF - Foreground for Fill Character
  182.   -  * Colors: FCCB - Background for Fill Character
  183.   -  * Colors: WCol - Word Color - The color the words in the status lines
  184.        are.
  185.   -  * Colors: FGC - Foreground Color
  186.   -  * Colors: BGC - Background Color
  187.   -  * Colors: Lc - Line Color
  188.  
  189.   Items with the dash before them have to be intialized within your program
  190.   to have it work properly.  If you use the pull down menu procedures you
  191.   have to do all the other ones.
  192.  
  193.   YOURNAME and YOURCODE don't have to be initialized until you regiter
  194.   TWI.  }
  195.  
  196. (***************************************************)
  197. (*** IMPORTANT! IMPORTANT! IMPORTANT! IMPORTANT! ***)
  198. (***************************************************)
  199. (*** FGC,BGC,FCCF,FCCB,LC,WCOL,X,Y are Integers! ***)
  200. (*** FGC,BGC,FCCF,FCCB,LC,WCOL are colors        ***)
  201. (*** X and Y are cooridinates                    ***)
  202. (*** A,B,C,D,E,F,G,etc... LineA... are strings   ***)
  203. (*** and are displayed in the windows you draw   ***)
  204. (***************************************************)
  205.  
  206.  
  207. (**** The Following Procedure Set The Interface Up ****)
  208.  
  209. procedure DrawBackGround(StatusLineTop,StatusLineBottom: string);
  210.  (* Draws the background of the interface, allows for full control *)
  211.  (* Refer: QuickBKGDraw *)
  212.  (* Example: DrawBackGround(Top,Bottom);
  213.  
  214. Procedure QuickBKGDraw(Top, Bottom : String);
  215.  (* Use instead of DrawBackground for very easy and fast Background draws *)
  216.  (* QUICKBKGDRAW uses hard coded "defaults" for colors and characters *)
  217.  (* All you have to enter is the top and bottom status lines *)
  218.  (* The difference is: You don't have to set the colors before you set the *)
  219.  (* background up *)
  220.  (* Refer: DrawBackGround; *)
  221.  (* Example: QuickBKGDraw(TheTopStatusLine,'The Bottom Status Line');
  222.  
  223. procedure ChangeStatusLine(Top,StatusLine:string);
  224.  (* Changes the Top and Bottom Status Lines *)
  225.  (* Refer: ChangeBottomLine *)
  226.  (* Example: ChangeStatusLine(Top,Bottom); *)
  227.  
  228. procedure ChangeBottomLine(Bottom: string; color : integer);
  229.  (* Changes the status line on the bottom of the screen *)
  230.  (* Refer: ChangeStatusLine; *)
  231.  (* Example: ChangeBottomLine(OnTheBottomLine,4);
  232.  
  233. procedure TwiClose;
  234.  (* Shuts TWI totally down, cleans up screen, and terminates program *)
  235.  (* execution *)
  236.  
  237. (**** The following procedures are misc. commands that are included fo your
  238.       benefit ****)
  239.  
  240. procedure DefaultColors;
  241.  (* Call this if you don't want to set the colors up *)
  242.  (* This contains the standard color defaults *)
  243.  (* Refer: QuickBKGDraw, DrawBackGround *)
  244.  
  245. procedure WaitForReturn;
  246.  (* Waits for the user to press return *)
  247.  
  248. Procedure WriteXYi(x,y,text : integer);
  249.  (* Writes an integer to any X,Y cooridinate on the screen *)
  250.  (* Example:  WriteXYI(4,4,4);  *)
  251.  
  252. Procedure WriteXY(x,y : integer; text : string);
  253.  (* Writes a string to any X,Y cooridinate on the screen *)
  254.  (* Example: WriteXY(4,4,'Do you like TWI?'); *)
  255.  
  256. (**** Pull Down Menu Procedures ****)
  257.  
  258. Procedure DrawMenus;
  259.  (* Draws the menu bar at the top of the screen *)
  260.  (* YOU MUST INTIALIZE MENUA...MENUG FOR IT WORK *)
  261.  
  262. Procedure MoveToLocal(MoveToplace : integer);
  263.  (* Moves you to one of the options on the menu bar *)
  264.  (* Refer: CleanOldLocation *)
  265.  (* Example: MoveToLocal(1); Would move you to MENUA *)
  266.  
  267. Procedure CleanOldLocation(oldLocation:integer);
  268.  (* Removes the cursor placed by MOVETOLOCAL *)
  269.  (* Refer: MoveToLocal *)
  270.  (* Example: CleanOldLocation(1); Would take the highlighted cursor off of
  271.     MENUA that was pot by MOVETOLOCAL *)
  272.  
  273. Procedure DrawSubMenu(Suba,Subb,Subc,Subd,Sube,Subf,Subg,Subh: string; x,y,lgth: integer);
  274.  (* Draws a sub menu of up to 8 options; SUBA..SUBH are the options *)
  275.  (* X,Y is the position of the submenu. LGTH is the length of the submenu *)
  276.  (* Refer: WhereCursorIsReWrite, OldPlaceRewrite *)
  277.  (* Example: DrawSubMenu(SubA,SubB,SubC,SubD,SubE,SubF,SubG,SubH,1,2,8);
  278.  
  279. Procedure WhereCursorIsReWrite(Placex,Placey : integer; option : string);
  280.  (* Though the procedure's name is strange, this basically writes over *)
  281.  (* an option on the screen to make it look like it is highlighted *)
  282.  (* Refer: DrawSubMenu, OldPlaceRewrite *)
  283.  (* Example: WhereCursorIsRewrite(3,3,SUBA); *)
  284.  
  285. Procedure OldPlaceReWrite(Placex,Placey: integer; option: string);
  286.  (* Goes back over where "WHERECURSORISREWRITE" and changes the option *)
  287.  (* in the submenu back to being normal, not highlighted *)
  288.  (* Refer: DrawSubMenu, WhereCursorIsRewrite *)
  289.  
  290. (**** The following procedure draw different types of boxes and windows on
  291.       the screen. ****)
  292.  
  293. procedure DrawOneLineWindow(A: String;x,y : integer);
  294.  (* Draws a window that is one line in height *)
  295.  (* Example: DrawOnelIneWindow(LineToDisplay,3,3); *)
  296.  
  297. Procedure DrawFullWindowOutline;
  298.  (* Draws a complete window that takes up 23 lines of the screen *)
  299.  
  300. procedure TwiFileLoad(FileName,HelpTitle: string);
  301.  (* Draws a window, and loads a file 10 lines long and 40 chars wide *)
  302.  (* The procedure also puts a title of the window on it *)
  303.  (* Example: TWIFileLoad('TWIDEMO.HLP','Help'); *)
  304.  
  305. procedure DrawSmallWindow(a,b,c,d : string; x,y : integer);
  306.  (* Draws a small four line window. *)
  307.  (* Example: DrawSmallWindow(LineA,'Line 2',LineC,'Line 4',25,8); *)
  308.  
  309. procedure DrawMediumWindow(a,b,c,d,e,f : string; x,y : integer );
  310.  (* Draws a window 6 lines long and about 40 characters wide *)
  311.  (* Refer: ClearMediumWindow *)
  312.  (* Example: DrawMediumWindow(A,B,C,D,E,F,4,5); *)
  313.  
  314. procedure DrawLargeWindow(a,b,c,d,e,f,g,h,i,j : string; x,y : integer);
  315.  (* Draws a 10 line window. *)
  316.  (* Refer: ClearLargeWindow *)
  317.  (* Example: DrawLargeWindow('Line 1',B,C,D,E,F,G,H,I,J,2,3); *)
  318.  
  319. procedure DrawColorBox(x,y: integer);
  320.  (* Draws a box that contains all possible combinations of colors available *)
  321.  (* This can be displayed, and used to have users customize their use *)
  322.  (* of TWI.  You have to write the actual input procedure, though *)
  323.  (* Example: DrawColorBox(4,4); *)
  324.  
  325. procedure DrawVeryBigWindow(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o: string; x,y: integer);
  326.  (* This is the biggest window available right now in TWI. It is 15 lines *)
  327.  (* and very wide. *)
  328.  (* Refer: ClearVeryBigWindow *)
  329.  (* Example: DrawVeryBigWindow(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,4,5); *)
  330.  
  331. Procedure WriteDosError(Error : Integer);
  332.  (* Displays, in a window, the DOS error returned to pascal in *)
  333.  (* DOSERROR after using EXEC,etc...  It Displays the error and the problem *)
  334.  (* Example: WriteDosError(DOSERROR); *)
  335.  
  336. (**** The following procedures clear the different types of windows and
  337.       boxes from the screen ****)
  338.  
  339. procedure ClearSmallWindow(x,y:integer);
  340.  (* Removes a small window from the screen *)
  341.  (* Refer: DrawSmallWindow *)
  342.  (* Example: ClearSmallWindow(25,8,FCCF,FCCB); *)
  343.  
  344. procedure ClearMediumWindow(x,y:integer);
  345.  (* Removes a medium window from the screen *)
  346.  (* Refer: DrawSmallWindow *)
  347.  (* Example: ClearMediumWindow(4,5); *)
  348.  
  349.  
  350. procedure ClearLargeWindow(x,y : integer);
  351.  (* Removes a Large Window from the screen *)
  352.  (* Refer: DrawLargeWindow *)
  353.  (* Example: ClearLargeWindow(2,3); *)
  354.  
  355.  
  356. procedure ClearVeryBigWindow(x,y: integer);
  357.  (* This removes a VeryBigWindow from the screen *)
  358.  (* Refer: DrawVeryBigWindow *)
  359.  (* Example: ClearVeryBigWindow(4,5); *)
  360.  
  361. Procedures and Global Variables for MENUS.TPU
  362. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  363. Interface
  364. Uses Crt;
  365. Var
  366.  MenuA,Menub,MenuC,Menud,MenuE,MenuF,MENUG : String[10];
  367.  Hfc, Hbc, Hc, Lc, Fgc, BGC : Integer;
  368.   (**************************************************************************
  369.    ** HFC - Highlight Foreground Color ** HBC - Highlight Background Color **
  370.    ** HC  - Highlight Color            ** LC  - Line Color                 **
  371.    ** FGC - Foreground Color           ** BGC - Background Color           **
  372.    **************************************************************************
  373.    ** Menua..menug are the options on the menu bar at the top of the screen**
  374.    **************************************************************************)
  375.  
  376.  
  377.  Procedure DrawMenus;
  378.   (* Draws the menu bar at the top of the screen *)
  379.   (* YOU MUST INTIALIZE MENUA...MENUG FOR IT WORK *)
  380.  
  381.  Procedure MoveToLocal(MoveToplace : integer);
  382.   (* Moves you to one of the options on the menu bar *)
  383.   (* Refer: CleanOldLocation *)
  384.   (* Example: MoveToLocal(1); Would move you to MENUA *)
  385.  
  386.  Procedure CleanOldLocation(var oldLocation:integer);
  387.   (* Removes the cursor placed by MOVETOLOCAL *)
  388.   (* Refer: MoveToLocal *)
  389.   (* Example: CleanOldLocation(1); Would take the highlighted cursor off of
  390.      MENUA that was pot by MOVETOLOCAL *)
  391.  
  392.  Procedure DrawSubMenu(var Suba,Subb,Subc,Subd,Sube,Subf,Subg,Subh: string; x,y,lgth: integer);
  393.   (* Draws a sub menu of up to 8 options; SUBA..SUBH are the options *)
  394.   (* X,Y is the position of the submenu. LGTH is the length of the submenu *)
  395.   (* Refer: WhereCursorIsReWrite, OldPlaceRewrite *)
  396.   (* Example: DrawSubMenu(SubA,SubB,SubC,SubD,SubE,SubF,SubG,SubH,1,2,8);
  397.  
  398.  Procedure WhereCursorIsReWrite(Placex,Placey : integer; option : string);
  399.   (* Though the procedure's name is strange, this basically writes over *)
  400.   (* an option on the screen to make it look like it is highlighted *)
  401.   (* Refer: DrawSubMenu, OldPlaceRewrite *)
  402.   (* Example: WhereCursorIsRewrite(3,3,SUBA); *)
  403.  
  404.  Procedure OldPlaceReWrite(Placex,Placey: integer; option: string);
  405.   (* Goes back over where "WHERECURSORISREWRITE" and changes the option *)
  406.   (* in the submenu back to being normal, not highlighted *)
  407.   (* Refer: DrawSubMenu, WhereCursorIsRewrite *)
  408.  
  409.